<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

</body>
<script>
  // var arr = [];  // 按顺序将  A B C D  添加至数组中
  // arr[arr.length] = "A";
  // arr[arr.length] = "B";
  // arr[arr.length] = "C";
  // arr[arr.length] = "D";
</script>
<script>
  // 数组的拓展方法 => 官方提供的操作数组的方法(所有的数组均可以使用 arr.方法())

  // 学习数组的拓展方法 需要注意的问题?
  // 1. 每个方法的作用
  // 2. 是否影响原数组   (有些方法会操作原数组,有些方法通过操作原数组返回新数组)
  // 3. 方法的返回值 


  // 数组的增 删 改(下标赋值) 查(下标取值)

  // push() 在数组尾部(所有元素的最后面)添加一个或多个元素
  // 返回值: 新增元素后数组的长度
  // 是否影响原数组: 是
  // var arr = ["A","B","C"];
  // var result = arr.push(7); // 添加1个
  // // var result = arr.push(7,8); // 多个
  // console.log(result);  // 4
  // console.log(arr);  //["A","B","C",7]

  // unshift()  在数组头部(所有元素的最前面)添加一个或多个元素
  // 返回值: 新增元素后数组的长度
  // 是否影响原数组: 是
  // var arr = ["A","B","C"];
  // // var result = arr.unshift(1);
  // var result = arr.unshift(1,2);
  // console.log(result);
  // console.log(arr);

  // pop()  在数组的尾部删除一个元素(每次调用删除一个)
  // 返回值: 被删除的元素
  // 是否影响原数组: 是
  // var arr = ["A","B","C"];
  // var result = arr.pop();
  // console.log(result);  //  "C"
  // console.log(arr);     //  ["A", "B"]

  // shift() 在数组的头部删除一个元素(每次调用删除一个)
  // 返回值: 被删除的元素
  // 是否影响原数组: 是
  // var arr = ["A","B","C"];
  // var result = arr.shift();
  // console.log(result);  // "A"
  // console.log(arr);     //   ["B", "C"]

  // var result = arr.shift();
  // console.log(result);  // "B"
  // console.log(arr);     //   ["C"]

  // --------------------------------------------------------------

  // splice()  增删改

  // splice(index,n)  任意位置删除  从下标为index的位置开始 删除n个元素
  // 返回值:被删除的元素形成的数组
  // 是否影响原数组: 是

  // var arr = ["A","B","C","D","E","F"];
  // var result = arr.splice(2,2);
  // console.log(result); // ["C","D"]
  // console.log(arr);   // ["A","B","E","F"];

  // splice(index,0,arg1,arg2...argN)  任意位置新增  从下标为index的位置开始 删除0个元素,再新增一个或多个元素(从第三参数开始 都属于新增的元素)
  // 返回值:被删除的元素形成的数组 => 由于没有删除元素 []
  // 是否影响原数组: 是
  //  var arr = ["A","B","C","D","E","F"];
  //  var result = arr.splice(2,0,2,3,4)
  // console.log(result); // []
  // console.log(arr); // ["A", "B", 2, 3, 4, "C", "D", "E", "F"]

  // splice(index,n,arg1,arg2...argN) 任意位置修改  从下标为index的位置开始 删除n个元素,再新增一个或多个元素(从第三参数开始 都属于新增的元素)
  // 返回值:被删除的元素形成的数组 
  // 是否影响原数组: 是

  var arr = ["A", "B", "C", "D", "E", "F"];
  var result = arr.splice(2, 2, "c", "d");
  console.log(result); // ["C","D"]
  console.log(arr); // ["A", "B", "c", "d", "E", "F"]

</script>

</html>